package src.greed;

public class no55 {//跳跃游戏

    /**
     * 不用管每次具体跳几步，只用看能到达的覆盖范围，只要覆盖范围能覆盖终点就行
     * 局部最优解：每次取最大跳跃步数（取最大覆盖范围），整体最优解：最后得到整体最大覆盖范围，看是否能到终点。
     */
    public boolean canJump(int[] nums) {
        int cover = 0;
        if(nums.length==1) return true;
        // i 只能在覆盖范围内移动
        for (int i = 0; i <= cover; i++) {
            cover = Math.max(i + nums[i], cover);  //每次更新cover，选现在能达到的最大范围
            if (cover >= nums.length - 1) {
                return true;
            }
        }
        return false;

    }
}
